#include "cJSON/cJSON.h"
#include "log/log.h"


int main(int argc, char const *argv[])
{
    char *name = "lhd";
    int age = 18;

    // 1. 生成json字符串 
    // 创建一个空的cJSON对象
    cJSON *root_obj = cJSON_CreateObject();
    if(root_obj == NULL)
    {
        log_error("创建cJSON对象失败");
        return -1;
    }
    // 添加name和age两项
    cJSON_AddStringToObject(root_obj, "name", name);
    cJSON_AddNumberToObject(root_obj, "age", age);
    // 生成json字符串
    char *json = cJSON_PrintUnformatted(root_obj);
    if(json == NULL)
    {
        log_error("生成json字符串失败");
        return -1;
    }
    log_info("生成的json字符串为: %s", json);

    // 2. 解析json字符串
    // 解析json字符串
    cJSON *json_obj = cJSON_Parse(json);
    if(json_obj == NULL)
    {
        log_error("解析json字符串失败");
        return -1;
    }
    // 获取name和age两项
    cJSON *name_item = cJSON_GetObjectItem(json_obj, "name");
    cJSON *age_item = cJSON_GetObjectItem(json_obj, "age");
    if(name_item == NULL || age_item == NULL)
    {
        log_error("获取json项失败");
        return -1;
    }
    // 获取name和age的值
    name = cJSON_GetStringValue(name_item);
    age = cJSON_GetNumberValue(age_item);
    log_debug("解析的json字符串为: name=%s, age=%d", name, age);

    // 3. 释放json字符串和json对象
    // 释放json字符串  cJsoN的print生成的json字符串需要手动释放free
    cJSON_free(json);
    // 释放json对象
    cJSON_Delete(json_obj);
    // 释放cJSON对象
    cJSON_Delete(root_obj);

    return 0;
}